package com.bestcem.xm.user.dao;

import com.bestcem.xm.user.entity.pojo.OrganizationQuotainfoDO;
import com.bestcem.xm.user.entity.pojo.QuotaInfoQueryDO;

import java.util.List;

/**
 * 公司限额统计
 *
 * @author jishuo.yan <jishuo.yan@idiaoyan.com>
 * @date 2022/3/21 14:14
 */
public interface OrganizationQuotainfoDao {

    /**
     * 创建公司限额信息
     *
     * @param organizationQuotainfoDO 公司限额信息
     * @return Integer
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/05/11 17:57
     */
    String insertSelective(OrganizationQuotainfoDO organizationQuotainfoDO);

    /**
     * 根据查询条件获取公司限额信息总数
     *
     * @param quotaInfoQueryDO 查询条件
     * @return countByQuery 公司限额数
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/03/24 17:30
     */
    long countQuataInfo(QuotaInfoQueryDO quotaInfoQueryDO);

    /**
     * 根据查询条件获取公司限额信息总数
     *
     * @param quotaInfoQueryDO 查询条件
     * @param orgList          公司列表
     * @param currentPage      当前页
     * @param size             每页大小
     * @return countByQuery 公司限额数
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/03/24 17:30
     */
    List<OrganizationQuotainfoDO> selectByQuery(QuotaInfoQueryDO quotaInfoQueryDO, List<String> orgList, Integer currentPage, Integer size);

    /**
     * 根据orgId获取公司限额信息
     *
     * @param orgId
     * @param currentPage
     * @param size
     * @return OrganizationQuotainfoDO 公司限额信息
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/03/24 17:30
     */
    List<OrganizationQuotainfoDO> listPageByOrgId(String orgId, Integer currentPage, Integer size);

    /**
     * 根据orgId获取公司限额信息总数
     *
     * @param orgId
     * @return OrganizationQuotainfoDO 公司限额信息
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/03/24 17:30
     */
    long countByOrgId(String orgId);

    /**
     * 根据orgId获取公司限额信息
     *
     * @param orgId 租户id
     * @return com.bestcem.xm.user.entity.pojo.OrganizationQuotainfoDO 公司限额信息
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/03/24 17:30
     */
    OrganizationQuotainfoDO getByOrgId(String orgId);

    /**
     * 公司限额数增加
     *
     * @param organizationQuotainfoDO 组织限额信息
     * @return Boolean
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/05/06 14:19
     */
    Integer updateQuotaConsumption(OrganizationQuotainfoDO organizationQuotainfoDO);

    /**
     * 更新公司限额信息
     *
     * @param organizationQuotainfoDO 组织限额信息
     * @return Integer
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/05/12 12:19
     */
    Integer updateByPrimaryKeySelective(OrganizationQuotainfoDO organizationQuotainfoDO);

    /**
     * 根据条件获取公司限额信息
     *
     * @param organizationQuotainfoDO 公司限额信息
     * @return List<OrganizationQuotainfoDO> 公司限额信息列表
     * @author jishuo.yan <jishuo.yan@idiaoyan.com>
     * @date 2022/05/12 12:30
     */
    List<OrganizationQuotainfoDO> selectBySelective(OrganizationQuotainfoDO organizationQuotainfoDO);

    /**
     * 根据限定条件查询公司限额信息
     *
     * @param quotaInfoQueryDO
     * @return java.util.List<com.bestcem.xm.user.entity.pojo.OrganizationQuotainfoDO>
     * @author zhangfeng <feng.zhang@idiaoyan.com>
     * @date 2022/6/27 17:13
     */
    List<OrganizationQuotainfoDO> listQuataInfo(QuotaInfoQueryDO quotaInfoQueryDO);
}
